//消失的数字(力扣面试题)
//解法一:0道n的和 减 nums数组的和
class Solution {
    public int missingNumber(int[] nums) {
        int sumnow=0;
        int max=0;
        int min=nums[0];
        for(int i=0;i<nums.length;i++){
            max=max>nums[i]?max:nums[i];
            min=min>nums[i]?nums[i]:min;
            sumnow+=nums[i];
        }
        int sumbefore=getsum(max);
        int result=sumbefore-sumnow;
        if(result==0&&min==0){
            return max+1;
        }
        else{
            return result;
        }
    }
    public int getsum(int i){
        int count = 0;
        for(int j=1;j<=i;j++){
            count+=j;
        }
        return count;
    }
}
//或者
class Solution {
    public static int missingNumber(int[] nums) {

        int count = 0;
        int sum = 0;

        int n = nums.length;
        for (int i = 0; i <= n; i++) {
            sum += i;
        }
        for (int i = 0; i < n; i++) {
            count += nums[i];
        }
        return sum-count;
    }
}

//解法二:异或
class Solution {
    public int missingNumber(int[] nums) {
        int sum=0;
        for(int i=0;i<nums.length;i++){
            //之所以要异或i,是因为由题意得，0到n类似于下标,而且a ^ a = 0：任何数字与自身异或的结果为 0。
            //a ^ 0 = a：任何数字与 0 异或的结果是它本身。
            //这样就能相互抵消
            sum^=i;
            sum^=nums[i];
        }
        sum^=nums.length;
        return sum;
    }

}



//排序矩阵查找（力扣面试题）
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        for(int i=0;i<matrix.length;i++){
            int[] matrix1=matrix[i];
            for(int j=0;j<matrix1.length;j++){
                if(matrix1[j]>target){
                    break;
                }
                if(matrix1[j]==target){
                    return true;
                }
            }
        }
        return false;
    }
}